﻿var http = require('http')
var createHandler = require('gitee-webhook-handler')
// var cmd=require('node-cmd');
var process = require('child_process');
// 所需要用到的秘钥..
var handler = createHandler({ path: '/webhooks_push', secret: '' })
// # post 
const port = 6667;
function run_cmd(cmd, args, callback) {
    var spawn = require('child_process').spawn;
    var child = spawn(cmd, args);
    var resp = "";
    child.stdout.on('data', function (buffer) { resp += buffer.toString(); });
    child.stdout.on('end', function () { callback(resp) });
}
handler.on('error', function (err) {
    console.error('Error:', err.message)
})
handler.on('Push Hook', function (event) {
    // 这个地方就是GitHub 和 Gitee 不一样的地方，需要注意
    console.log('Received a push event for %s to %s',
        event.payload.repository.name,
        event.payload.ref);
    // 提交到master 才自动拉取  可按照需求自行更改
    if (event.payload.ref.indexOf("master") > -1) {
        // 这里改成你项目的目录  
        // git fetch --all && git reset --hard origin/master && git pull  是怕服务端冲突 一切以你提交的为准
        process.exec('cd /data/xxx &&git fetch --all && git reset --hard origin/master && git pull', function (error, stdout, stderr) {
            console.log("error:" + error);
            console.log("stdout:" + stdout);
            console.log("stderr:" + stderr);

        });
    }
})
try {
    http.createServer(function (req, res) {
        handler(req, res, function (err) {
            res.statusCode = 404
            res.end('no such location')
        })

    }).listen(port)

    console.log("启动成功 端口：" + port)
} catch (err) {
    console.error('Error:', err.message)
}
